"use strict";

/**
 * @namespace testUtils
 */

var testUtils = {};

/**
 * @memberof testUtils
 * @description 加载测试用例
 * @param {string[]} urls 
 */
testUtils.loadTestCases = function (urls) {
  if (!(urls instanceof Array)) {
    throw new Error('argument#0 "urls" required Array');
  }

  var jqBody = $('body');

  urls.forEach(function (url) {
    var html = '<script src="' + url + '" type="text/javascript"></script>';
    jqBody.append(html);
  });
};

/**
 * @memberof testUtils
 * @description 测试视图
 * @param {function} testFn 
 */
testUtils.testAppView = function (testFn) {
  if (!globalUtils.isFunction(testFn)) {
    throw new Error('argument#0 "testFn" required function');
  }

  // 测试前置处理
  Pure.fn.Ajax.callService('web-front/unitTest/setUp');

  $('#qunit-fixture').html('<div class="home-main-content pure-app">' +
    '<main class="pure-view-main"></main></div>');

  // 执行测试用例
  testFn(Pure.fn.ViewLoader.lastViewInfo);

  // 测试后置处理
  Pure.fn.Ajax.callService('web-front/unitTest/tearDown');
};
